package com.design.SingletonMode;

/**
 * 懒汉  性能差
 *
 * getInstance()方法可能会存在线程安全问题，需要考虑是否加锁。
 * 无参构造为私有
 * 成员变量idlerSingleton为静态变量，
 * 最好使用volatile关键字修饰，
 * 理由：因为在多线程安全问题中有一个问题就是有序性的问题，
 * 虽然jdk在高版本修复了这个问题，建议最好加上volatile，禁止指令重排序。
 *
 * 加锁情况下不适用于频繁调用
 */
public class Mode2 {

    private volatile static Mode2 mode2;

    private Mode2(){}

    public static synchronized Mode2 getInstance(){
        if(null == mode2){
            mode2 = new Mode2();
        }
        return mode2 ;
    }

}
